import Vue from 'vue'
import Router from 'vue-router'
import guard from './guard'

import Index from '@v/Index'
import Home from '@v/home/home'
import Publish from '@v/Publish/Index'

import QqMaps from '@v/common/QqMaps'
import CommentEditor from '@v/common/CommentEditor'
import PicViewer from '@v/common/PicViewer'
import QrCode from '@v/common/QrCode'

Vue.use(Router)

const keepAlive = true,
fromUrlStop = true

// 设置路由path和name
function p(name, path){
  return {
    path: `/${path ? path : name}`,
    name,
    meta: {}  // 防止未设置meta造成取到undefined的情况
  }
}

var routes = [
  {  // 首页
    path: '/',
    name: 'index',
    component: Index,

    children: [
      {  // 首页内容
        ...p('/'),
        component: Home,
        meta: { keepAlive}
      }, {
        ...p('index/home'),
        redirect: '/'
      }, {  // 发布
        ...p('index/publish'),
        component: Publish,
                
        children: [
          {   // 地图
            ...p('index/publish/maps'),
            component: QqMaps,
            meta: { fromUrlStop }
          }, {  // 图片查看器
            ...p('index/publish/picViewer'),
            component: PicViewer
          }
        ]
      }, {  // 发现
        ...p('index/finds'),
        component: () => import('@v/finds/Finds'),
        meta: { keepAlive}
      }, {  // 消息
        ...p('index/messages'),
        component: () => import('@v/messages/Messages'),
        meta: { keepAlive }
      }, {  // 我的
        ...p('index/my'),
        component: () => import('@v/my/My'),
        meta: { keepAlive }
      }
    ],
  }, {  // 详情/二手车
    ...p('info/usedCar'),
    component: () => import('@v/info/UsedCar'),
    
    children: [
      {  // 评论器
        ...p('info/usedCar/comment'),
        component: CommentEditor
      }, {  // 图片查看器
        ...p('info/usedCar/picViewer'),
        component: PicViewer
      }, {
        ...p('info/usedCar/qrCode'),
        component: QrCode
      }
    ]
  }, {  // 详情/标书
    ...p('info/sign'),
    component: () => import('@v/info/sign'),
    
    children: [
      {  // 评论器
        ...p('info/sign/comment'),
        component: CommentEditor
      }, {
        ...p('info/sign/qrCode'),
        component: QrCode
      }
    ]
  }, {  // 详情/找人 or 找车
    ...p('info/seek'),
    component: () => import('@v/info/seek'),
    
    children: [
      {  // 评论器
        ...p('info/seek/comment'),
        component: CommentEditor
      }, {
        ...p('info/seek/qrCode'),
        component: QrCode
      }
    ]
  }, {  // 详情/发现
    ...p('info/find'),
    component: () => import('@v/info/find'),
    
    children: [
      {  // 评论器
        ...p('info/find/comment'),
        component: CommentEditor
      }, {  // 图片查看器
        ...p('info/find/picViewer'),
        component: PicViewer
      }, {
        ...p('info/find/qrCode'),
        component: QrCode
      }
    ]
  }, {  // 发现/发布
    ...p('index/finds/publish'),
    component: () => import('@v/finds/publish'),
    meta: { keepAlive},

    children: [
      {  // 图片查看器
        ...p('index/finds/publish/picViewer'),
        component: PicViewer
      }
    ]
  }, {  // 已发布列表
    ...p('publishedList'),
    component: () => import('@v/publishedList/PublishedList'),
    meta: { keepAlive }
  }, {  // 已收藏列表
    ...p('collectedList'),
    component: () => import('@v/collectedList/CollectedList'),
    meta: { keepAlive }
  }, {  // 已咨询列表
    ...p('calledList'),
    component: () => import('@v/calledList/CalledList'),
    meta: { keepAlive }
  }, {  // 全部二手车列表
    ...p('allList/usedCar'),
    component: () => import('@v/allList/UsedCar'),
    meta: { keepAlive }
  }, {  // 全部标书列表
    ...p('allList/signs'),
    component: () => import('@v/allList/Signs'),
    meta: { keepAlive}
  }, {  // 全部人找车列表
    ...p('allList/seekCar'),
    component: () => import('@v/allList/seekCar'),
    meta: { keepAlive}
  }, {  // 全部车找人列表
    ...p('allList/seekPerson'),
    component: () => import('@v/allList/seekPerson'),
    meta: { keepAlive}
  }, {  // 全部发现列表
    ...p('allList/finds'),
    component: () => import('@v/allList/finds'),
    meta: { keepAlive}
  }, {  // 选择城市
    ...p('citySelect'),
    component: () => import('@v/home/citySelect')
  }, {  // 验证手机
    ...p('common/vertifyPhoneNum'),
    component: () => import('@v/common/vertifyPhoneNum'),
    meta: { fromUrlStop }
  }, {  // 关于我们
    ...p('index/my/about'),
    component: () => import('@v/my/About')
  }, {  // 反馈
    ...p('index/my/feedback'),
    component: () => import('@v/my/Feedback')
  }, {  // 富文本容器
    path: '/common/richText',
    component: () => import('@v/common/RichText'),
  },
  
  // {  // 进入无效路由后，重定向至首页
  //   path: '*',
  //   redirect: '/'
  // }
]


// guard为路由实例添加全局守卫
export default guard(new Router({
  mode: 'history',
  base: '/vue/h5/home',
  routes
}))
